package inheritancedemo;

class Base {
    public int a = 10;
    public int b = 20;
    public int c = 30;
}

class Derived extends Base{
    public int a = 100; // 与父类中成员a同名，且类型相同
    public char b = 'x'; // 与父类中成员b同名，但类型不同

    public void method(){
        System.out.println(a); // 100,子类和父类都有成员变量a，优先访问子类的a
        System.out.println(b); // x,子类和父类都有成员变量b,但类型不同,则访问的成员变量类型为子类的,即为char
        System.out.println(c); // 30,子类没有c，访问的肯定是从父类继承下来的c
        // System.out.println(d); // 编译失败，因为父类和子类都没有定义成员变量d
        System.out.println(super.a); // 10,访问父类的a
        System.out.println("=======================");
        // 用super和this去访问c都是可以的
        System.out.println(super.c); // 30
        System.out.println(this.c); // 30
    }
}

public class TestDemo2 {

    public static void main(String[] args) {
        Derived derived = new Derived();
        derived.method();
    }
}
